/**
 * 結果一覧（跳躍競技－長さの跳躍）画面 コントローラ
 */
APP.controller('ResultLeapBCtrl', function($http, $window, $timeout, $anchorScroll) {
  
  // thisを保持（Ajax内のthisと混同を防ぐ為）
  var pthis = this;
  // HTMLファイル名取得
  var fileName = window.location.href.split('/').pop().split(".html").shift();


  /**
   * 初期処理
   */
  pthis.Initialize = function () {

    // 表示用データをクリア
    pthis.datTaikai = [];
    pthis.datResultLeapB = [];
    pthis.datRekidaiKirokuAll = undefined;
    pthis.datRekidaiKiroku = undefined;
    pthis.prmRekidai = "";
    // 並び替えを追加（初期値は順位）
    pthis.prmSort = "1";
    // 混成集計一覧
    pthis.datKonseiShukei = [];
    pthis.datKonseiShukeiInfo = undefined;


    // Promiseを使用しJSONを並列取得し、表示処理を実施する
    Promise.all([new Promise(function (resolve, reject) {

      //=== 大会情報JSONの取得を行う
      $http({
        method  : AJAX_METHOD_GET,
        url     : '../../Taikai.json' + '?a=' + START_TIMESTAMP,
      }).then(function successCallback(response) {
        // 大会情報データ
        pthis.datTaikai = response.data;
        resolve();
      }, function errorCallback(response) {
        reject();
      });

    }), new Promise(function (resolve, reject) {

      //=== 結果一覧（跳躍競技－長さの跳躍）画面 一覧JSONの取得を行う
      $http({
        method  : AJAX_METHOD_GET,
        url     : './'+fileName+'.json' + '?a=' + START_TIMESTAMP,
      }).then(function successCallback(response) {
        // 全結果一覧（跳躍競技－長さの跳躍）データ
        pthis.datResultLeapB = response.data;
        resolve();
      }, function errorCallback(response) {
        reject();
      });
      
    }), new Promise(function (resolve, reject) {

      //=== 混成集計（一覧）画面 一覧JSONの取得を行う
      $http({
        method  : AJAX_METHOD_GET,
        url     : '../../konseishukei/KonseiShukei.json' + '?a=' + START_TIMESTAMP,
      }).then(function successCallback(response) {
        // 全混成集計（一覧）データ
        pthis.datKonseiShukei = response.data;
        resolve();
      }, function errorCallback(response) {
        reject();
      });
      
    })]).then(function () {

      //=== 歴代記録ダイアログ用JSONを取得
      $http({
        method  : AJAX_METHOD_GET,
        url     : '../../rekidai/RekidaiKiroku.json' + '?a=' + START_TIMESTAMP,
      }).then(function successCallback(response) {
        // 全歴代記録データ
        pthis.datRekidaiKirokuAll = response.data.RekidaiKirokuList;
        // キーを決定する
        var RekidaiKirokuKey = "";
        if (!!pthis.datResultLeapB.RekidaiKyogiList) {
          // 合体競技の場合、
          RekidaiKirokuKey = pthis.datResultLeapB.RekidaiKyogiList[0].KyogiNo + "-" + pthis.datResultLeapB.SubNo;
          pthis.prmRekidai = pthis.datResultLeapB.RekidaiKyogiList[0].KyogiNo;
        } else {
          // 通常の場合、
          RekidaiKirokuKey = pthis.datResultLeapB.KyogiNo + "-" + pthis.datResultLeapB.SubNo;
        }
        // 歴代記録データ
        pthis.datRekidaiKiroku = pthis.datRekidaiKirokuAll[RekidaiKirokuKey];
      }, function errorCallback(response) {
        // JSON取得エラー
      });

      //=== 混成集計結果があるか
      for (var i in pthis.datKonseiShukei.KonseiShukeiList) {
        var konseiShukei = pthis.datKonseiShukei.KonseiShukeiList[i];
        // 同じ競技NOデータを探す
        var konseiDetails = konseiShukei.Details + "-";
        if (konseiDetails == pthis.datResultLeapB.DetailKey) {
          pthis.datKonseiShukeiInfo = konseiShukei;
          break;
        }
      }
        
    }).catch(function () {
      // JSON取得エラー
    });

  };

  /**
   * 歴代記録ボタンクリックイベント
   */
  pthis.ShowRekidai = function () {

    // 歴代記録ダイアログを表示する
    if (!!pthis.datRekidaiKiroku) {
      RekidaiDialogShow();
    }

  }

  /**
   * 歴代記録ダイアログ競技チェンジイベント
   */
  pthis.ChangeRekidai = function () {

    // キーを生成
    var RekidaiKirokuKey = pthis.prmRekidai + "-" + pthis.datResultLeapB.SubNo;
    // 歴代記録データ
    pthis.datRekidaiKiroku = pthis.datRekidaiKirokuAll[RekidaiKirokuKey];

  }

  /**
   * 混成リンククリックイベント
   */
  pthis.ClickLinkKonsei = function (link) {
    // 詳細ページ遷移
    if (!!link) {
      // 混成集計のパスに合わせる
      window.location.href = "../../konseishukei/" + link;
    }
  }

  /**
   * ソートボタン変更イベント
   */
   pthis.ClickSort = function () {
    
    for (var i in pthis.datResultLeapB.ResultInfo) {
      pthis.datResultLeapB.ResultInfo[i].Sort = pthis.prmSort;
    }

  }


  // 初期処理を実行
  pthis.Initialize();

});

$(function(){
  // 最高記録の試技の色を変更する
  setTimeout(() => {
    $('.kirokunum').each(function(){
      const num = $(this).attr('num');
      const p = $(this).parent('tr');
      p.find(`.kiroku${num}`).addClass('orange');
    });
  }, 500);

  $('input[name="prmSort"]').on('change',()=>{
    $('.kirokunum').each(function(){
      const num = $(this).attr('num');
      const p = $(this).parent('tr');
      p.find(`.kiroku${num}`).addClass('orange');
    });
  });
});